﻿using System;
using MySql.Data.MySqlClient;
using Mx.Ipn.Escom.TT20080015.Modelo.DB;
using Mx.Ipn.Escom.TT20080015.Modelo.Datos;

namespace Mx.Ipn.Escom.TT20080015.Modelo.DB
{
    public class CasoEstudioManager : ConexionMySql
    {
        /// <summary>
        /// Método que registra a través de una llamada a procedimiento en la base de datos un Caso de Estudio.
        /// </summary>
        /// <param name="e">Objeto Estudio que se va a registrar.</param>
        public static void Registrar(Estudio e)
        {
            MySqlCommand command = getcommand();

            command.CommandText = "CALL registrar_estudio" + e.ToString();
            try
            {
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
            finally
            {
                command.Connection.Close();
            }
        }

        /// <summary>
        /// Método que llama al procedimiento para guardar un Caso de Estudio modificado.
        /// </summary>
        /// <param name="e">Objeto Estudio que se modifica.</param>
        public static void Actualizar(Estudio e)
        {
            MySqlCommand command = getcommand();

            command.CommandText = "CALL modificar_caso_estudio" + e.ToString();
            try
            {
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
            finally
            {
                command.Connection.Close();
            }
        }

        /// <summary>
        /// Método que realiza una cosulta a la base de datos de un Caso de Estudio a partir de su id.
        /// </summary>
        /// <param name="id">Identificador del Caso de Estudio que se consulta.</param>
        /// <returns></returns>
        public static Estudio Consultar(int id)
        {
            Estudio estudio;
            MySqlCommand command = getcommand();

            command.CommandText = "CALL consultar_caso_estudio(?value)";
            command.Parameters.Add("?value", id);
            try
            {
                command.Connection.Open();
                MySqlDataReader rd = command.ExecuteReader();
                if (rd.Read())
                {
                    estudio = new Estudio(
                        Convert.ToInt32(id),
                        rd.GetInt32(1),
                        rd.GetInt32(2),
                        rd.GetInt32(3),
                        rd.GetInt32(4),
                        rd.GetInt32(5),
                        rd.GetInt32(6),
                        rd.GetInt32(7),
                        rd.GetInt32(8),
                        rd.GetInt32(9),
                        rd.GetInt32(10),
                        rd.GetDateTime(11),
                        rd.GetDateTime(12),
                        rd.GetBoolean(13));
                }
                else
                    estudio = new Estudio();
                }
            finally
            {
                command.Connection.Close();
            }
            return estudio;
        }
    }
}
